package com.tencent.iov.cowin.befsale.clue.repository.clue.impl;

import com.github.pagehelper.Page;
import com.tencent.iov.cowin.befsale.clue.controller.clue.vo.request.UpdateClueDayStatsRequest;
import com.tencent.iov.cowin.befsale.clue.controller.cus.vo.request.ClueIntentionGradeDataRequest;
import com.tencent.iov.cowin.befsale.clue.dao.clue.ClueDayStatsDao;
import com.tencent.iov.cowin.befsale.clue.domain.clue.po.ClueDayStats;
import com.tencent.iov.cowin.befsale.clue.repository.clue.ClueDayStatsManager;
import com.software.boot.dao.annotation.TargetDataSource;
import com.software.common.consts.DbLinkConfig;
import org.apache.ibatis.session.RowBounds;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;


/**
 * @Describe: 线索统计看板表_Manager实现层
 * @author: xiamu
 * @created: 2022-01-14 09:42:53
 * @version: 1.0
 */
@Service
public class ClueDayStatsManagerImpl implements ClueDayStatsManager {
	
	@Autowired
	private ClueDayStatsDao clueDayStatsDao;

	/**
	 * 通过ID获取详细信息
	 *
	 * @param: id
	 * @return: ClueDayStats对象
	 */
	@Override
	@TargetDataSource(DbLinkConfig.SW_SCRM_READ)
	public ClueDayStats getDetailById(Long id){
		return clueDayStatsDao.getDetailById(id);
	}

	/**
	 * 单条数据插入ClueDayStats
	 * @param request
	 * @return 插入的条数
	 */
	@Override
	@TargetDataSource(DbLinkConfig.SW_SCRM_WRITE)
	public int insert(ClueDayStats request){
		return clueDayStatsDao.insert(request);
    }

	/**
	 * 批量插入ClueDayStats
	 * @param requests
	 * @return 批量插入的条数
	 */
	@Override
	@TargetDataSource(DbLinkConfig.SW_SCRM_WRITE)
    public int insertBatch(List<ClueDayStats> requests){
		return clueDayStatsDao.insertBatch(requests);
    }

	/**
	 * 单条ClueDayStats更新
	 * @param request
	 * @return 更新的条数
	 */
	@Override
	@TargetDataSource(DbLinkConfig.SW_SCRM_WRITE)
    public int update(ClueDayStats request){
		return clueDayStatsDao.update(request);
    }

	/**
	 * 单条ClueDayStats删除
	 * @param id
	 * @return 删除的条数
	 */
	@Override
	public int delete(Integer id) {
		return clueDayStatsDao.delete(id);
	}

	/**
	 * 根据条件查询对象list列表
	 * @param request
	 * @return 查询结果
	 */
	@Override
	@TargetDataSource(DbLinkConfig.SW_SCRM_READ)
	public List<ClueDayStats> getListByParam(ClueDayStats request){
		return clueDayStatsDao.getListByParam(request);
	}

	/**
	 * 根据条件查询对象page记录
	 * @param request
	 * @param rowBounds
	 * @return 分页对象
	 */
	@Override
	@TargetDataSource(DbLinkConfig.SW_SCRM_READ)
	public Page<ClueDayStats> getPageByParam(ClueDayStats request, RowBounds rowBounds){
		return clueDayStatsDao.getPageByParam(request, rowBounds);
	}

	/**
	 * 根据条件查询单个对象
	 * @param request
	 * @return
	 */
	@Override
	public ClueDayStats getOneByParam(ClueDayStats request) {
			return clueDayStatsDao.getOneByParam(request);
	}

	/**
	 * 管理看板-顾问排行
	 * add by zly 2022-01-14
	 * @param clueDataRequestParam
	 * @return
	 */
	@Override
	public Page<ClueDayStats> getClueTaskDataByType(ClueIntentionGradeDataRequest clueDataRequestParam, RowBounds rowBounds) {
		return clueDayStatsDao.getClueTaskDataByType(clueDataRequestParam,rowBounds);
	}

	/**
	 * 批量同步宽表的顾问到统计表，若已在统计表存在的顾问，则不会同步
	 * add by zly
	 * 2022-01-14
	 */
	@Override
	public void sycnInsertBatch(ClueIntentionGradeDataRequest clueDataRequest) {
		clueDayStatsDao.sycnInsertBatch(clueDataRequest);
	}

	/**
	 * 查询统计表中 顾问名称或者图像，或者租户，或者企微，为空的顾问
	 * add by zly
	 * 2022-01-14
	 * @return
	 */
	@Override
	public List<Long> getEmployeeIdList() {
		return clueDayStatsDao.getEmployeeIdList();
	}

	/**
	 * 批量修改统计表中的顾问信息
	 * add by zly
	 * 2022-01-14
	 * @param updateClueDayRequestList
	 */
	@Override
	public void updateBatchClueDayByEmpId(List<UpdateClueDayStatsRequest> updateClueDayRequestList) {
		clueDayStatsDao.updateBatchClueDayByEmpId(updateClueDayRequestList);
	}

	/**
	 * 根据统计开始时间，结束时间查询顾问userId
	 * add by zly
	 * 2022-01-15
	 * @param empListRequest
	 */
	@Override
	public List<ClueDayStats> getListByStartTimeEndTime(ClueDayStats empListRequest) {
		return clueDayStatsDao.getListByStartTimeEndTime(empListRequest);
	}

	/**
	 * 根据主键批量修改统计表中的统计数据信息
	 * add by zly
	 * 2022-01-16
	 * @param empList
	 */
	@Override
	public void updateBatchClueDayById(List<ClueDayStats> empList) {
		clueDayStatsDao.updateBatchClueDayById(empList);
	}

	/**
	 * 检查当天是否从宽表同步顾问过来
	 * add by zly
	 * 2022-01-16
	 * @param sysnDataRequest
	 * @return
	 */
	@Override
	public Integer checkTheDayEmpData(ClueDayStats sysnDataRequest) {
		return clueDayStatsDao.checkTheDayEmpData(sysnDataRequest);
	}

	/**
	 * 删除统计表中租户，企微，usnerId为空得数据
	 * add by zly
	 * 2022-01-17
	 * @param
	 * @return
	 */
	@Override
	public void deleteDateWithNoTenantId() {
		clueDayStatsDao.deleteDateWithNoTenantId();
	}
}
